package com.jet.cashier.service;

import com.jet.cashier.dao.CashierModeDao;
import com.jet.cashier.domain.entity.CashierModeEntity;
import com.jet.cashier.domain.enums.CashierMobileMode;
import com.jet.cashier.domain.enums.CashierPcMode;
import com.jet.cashier.domain.vo.CashierModeVo;
import com.jet.core.utils.IdUtil;
import org.springframework.beans.BeanUtils;
import org.springframework.stereotype.Service;

import javax.annotation.Resource;

/**
 * @author dcl
 * @since 2025/4/27 13:46
 */
@Service
public class CashierModeService {

    @Resource
    private CashierModeDao cashierModeDao;

    public void editPcMode(long merchantNo, long storeNo, String accountId, int pcMode) {
        CashierModeEntity entity = cashierModeDao.findByAccountId(merchantNo, storeNo, accountId);
        if (entity == null) {
            entity = new CashierModeEntity();
            entity.setId(IdUtil.generateLower());
            entity.setMerchantNo(merchantNo);
            entity.setStoreNo(storeNo);
            entity.setAccountId(accountId);
            entity.setMobileMode(CashierMobileMode.LIST_MODE.getCode());
            entity.setPcMode(pcMode);
            cashierModeDao.save(entity);
            return;
        }
        entity.setPcMode(pcMode);
        cashierModeDao.editPcMode(entity);
    }

    public void editMobileMode(long merchantNo, long storeNo, String accountId, int mobileMode) {
        CashierModeEntity entity = cashierModeDao.findByAccountId(merchantNo, storeNo, accountId);
        if (entity == null) {
            entity = new CashierModeEntity();
            entity.setId(IdUtil.generateLower());
            entity.setMerchantNo(merchantNo);
            entity.setStoreNo(storeNo);
            entity.setAccountId(accountId);
            entity.setPcMode(CashierPcMode.TYPICAL.getCode());
            entity.setMobileMode(mobileMode);
            cashierModeDao.save(entity);
            return;
        }
        entity.setMobileMode(mobileMode);
        cashierModeDao.editPcMode(entity);
    }

    public CashierModeVo getCashierMode(long merchantNo, long storeNo, String accountId) {
        CashierModeEntity entity = cashierModeDao.findByAccountId(merchantNo, storeNo, accountId);
        if (entity == null) {
            entity = new CashierModeEntity();
            entity.setId(IdUtil.generateLower());
            entity.setMerchantNo(merchantNo);
            entity.setStoreNo(storeNo);
            entity.setAccountId(accountId);
            entity.setPcMode(CashierPcMode.TYPICAL.getCode());
            entity.setMobileMode(CashierMobileMode.SCAN_MODE.getCode());
            cashierModeDao.save(entity);
        }
        CashierModeVo vo = new CashierModeVo();
        BeanUtils.copyProperties(entity, vo);
        return vo;
    }
}
